#include <stdio.h>
 
int main(int argc,const char * argv[])
{
 //⼆维数组的初始化
 int arr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
 int (*p)[4] = arr;
 //数组指针 的定义 ，列宽为 4 ，指向⼆维数组arr
 //注意： (*p) 括号⼀定要加 ，不加的花 就是指针数组
 //定义数组指针之后，对数组指针的操作，就相当于对⼆维数组操作
 //arr[i][j] <===> *(arr[i] + j) <===> *(*(arr + i) + j)
 //p[i][j] <===> *(p[i] + j) <===> *(*(p + i) + j)
 int i,j;
 for(i = 0;i < 3; i++)
 {
 for(j = 0; j < 4 ; j++)
 {
 //printf("p[%d][%d] = %d ",i,j,p[i][j]);
 //printf("p[%d][%d] = %d ",i,j,*(p[i] + j));
 printf("p[%d][%d] = %d ",i,j,*(*(p + i) + j));
 }
 putchar(10);
 }
 // p 和 arr 区别
 //p可以++ 可以被赋值
 //arr是常量 不可以++ 不可以赋值
 return 0;
}
